package logique.solution;

import java.util.Vector;

public class Solution {

	public Vector<Affectation<?>> affectations;
	
	public Solution(Vector<Affectation<?>> affectations) {
		super();
		this.affectations = affectations;
	}
	public Solution() {
		affectations = new Vector<Affectation<?>>();
	}
	public Solution getCopy() {
		Solution s = new Solution();
		return s;
	}
	public Solution getVraieCopie() {
		Solution s = new Solution();
		for (Affectation aff : getAffectations()) {
			s.affectations.add(aff.getCopy());
		}
		return s;
	}
	public String toString () {
		String str = null;
		if (affectations == null) {
			return "affectation nulle";
		} else {
			for (Affectation<?> a : affectations)
				if (str == null)
					str = a.toString();
				else
					str += " ; " + a.toString();
			return str;
		}
	}
	
	public void afficher () {
		boolean debut = true;
		for (Affectation<?> a : affectations)
			if (debut) {
				a.afficher();
			} else {
				System.out.print(" ; ");
				a.afficher();
			}
	}
	
	public Vector<Affectation<?>> getAffectations() {
		return affectations;
	}
	
	public void addAffectation (Affectation<?> a) {
		affectations.add(a);
	}
	
	public double getAffectation (Variable v) {
		for (Affectation<?> a : affectations) {
			if (a.getVariable().equals(v))
				return Double.valueOf(a.getValue().toString());
		}
		return .0;
	}
	
	public double getAffectation (String nomVecteur, int indice) {
		for (Affectation<?> a : affectations) {
			if (a.getVariable().equals(nomVecteur, indice))
				return Double.valueOf(a.getValue().toString());
		}
		return .0;
	}
	
	public void setAffectation (Variable v, int n) {
		for (Affectation<?> a : affectations) {
			if (a.getVariable().equals(v))
				((Affectation<Integer>) a).setValue(n);
		}
	}
	
	public void setAffectation (String nomVecteur, int indice, int n) {
		for (Affectation<?> a : affectations) {
			if (a.getVariable().equals(nomVecteur, indice))
				((Affectation<Integer>) a).setValue(n);
		}
	}
	
}